package model

import (
	"gorm.io/gorm"
	"time"
)

type DataKill struct {
	ID             int64  `json:"id" gorm:"id"`
	FtpInfoId      int64  `json:"ftp_info_id" gorm:"ftp_info_id"`           // ftp_info_id
	Date           string `json:"date" gorm:"date"`                         // 日期
	Time           string `json:"time" gorm:"time"`                         // 时间
	LogTime        int64  `json:"log_time" gorm:"log_time"`                 // log_time
	SteamId        string `json:"steam_id" gorm:"steam_id"`                 // steamid
	GameId         int64  `json:"game_id" gorm:"game_id"`                   // 被杀人游戏id
	GameName       string `json:"game_name" gorm:"game_name"`               // 被杀人游戏名称
	EventType      string `json:"event_type" gorm:"event_type"`             // 事件类型
	UseWeapon      string `json:"use_weapon" gorm:"use_weapon"`             // 使用武器
	GameTime       string `json:"game_time" gorm:"game_time"`               // 游戏内时间
	KillerSteamId  string `json:"killer_steam_id" gorm:"killer_steam_id"`   // 锁所属steamid
	KillerGameId   int64  `json:"killer_game_id" gorm:"killer_game_id"`     // 锁所属用户id
	KillerGameName string `json:"killer_game_name" gorm:"killer_game_name"` // 锁所属用户名称
	KillerLocation string `json:"killer_location" gorm:"killer_location"`   // 杀手所在地址
	VictimLocation string `json:"victim_location" gorm:"victim_location"`   // 被害人所在地址
	KillDistance   string `json:"kill_distance" gorm:"kill_distance"`       // 击杀距离
	UpdatedAt      int64  `json:"updated_at" gorm:"updated_at"`             // 修改时间
	CreatedAt      int64  `json:"created_at" gorm:"created_at"`             // 添加时间
}

func (DataKill) TableName() string {
	return "sm_data_kill"
}

func (u DataKill) BeforeUpdate(tx *gorm.DB) (err error) {
	now := time.Now()
	unixTime := now.Unix()
	u.UpdatedAt = unixTime
	u.CreatedAt = unixTime
	return nil
}

type DataKillM struct {
	DB *gorm.DB
}

func NewDataKillM() *DataKillM {
	return &DataKillM{
		GetDB(),
	}
}

func (c *DataKillM) InsertDataKill(DataArr []DataKill) bool {

	result := c.DB.Omit("id").CreateInBatches(DataArr, 1000)

	if result.Error != nil {
		panic(result.Error)
	}
	return true
}
